home *** CD-ROM | disk | FTP | other *** search
- package koala.dynamicjava.interpreter;
-
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.ListIterator;
- import koala.dynamicjava.interpreter.context.Context;
- import koala.dynamicjava.interpreter.error.CatchedExceptionError;
- import koala.dynamicjava.interpreter.error.ExecutionError;
- import koala.dynamicjava.tree.AddAssignExpression;
- import koala.dynamicjava.tree.AddExpression;
- import koala.dynamicjava.tree.AndExpression;
- import koala.dynamicjava.tree.ArrayAccess;
- import koala.dynamicjava.tree.ArrayAllocation;
- import koala.dynamicjava.tree.ArrayInitializer;
- import koala.dynamicjava.tree.BinaryExpression;
- import koala.dynamicjava.tree.BitAndAssignExpression;
- import koala.dynamicjava.tree.BitAndExpression;
- import koala.dynamicjava.tree.BitOrAssignExpression;
- import koala.dynamicjava.tree.BitOrExpression;
- import koala.dynamicjava.tree.BlockStatement;
- import koala.dynamicjava.tree.CastExpression;
- import koala.dynamicjava.tree.CatchStatement;
- import koala.dynamicjava.tree.ClassAllocation;
- import koala.dynamicjava.tree.ClassDeclaration;
- import koala.dynamicjava.tree.ComplementExpression;
- import koala.dynamicjava.tree.ConditionalExpression;
- import koala.dynamicjava.tree.DivideAssignExpression;
- import koala.dynamicjava.tree.DivideExpression;
- import koala.dynamicjava.tree.DoStatement;
- import koala.dynamicjava.tree.EqualExpression;
- import koala.dynamicjava.tree.ExclusiveOrAssignExpression;
- import koala.dynamicjava.tree.ExclusiveOrExpression;
- import koala.dynamicjava.tree.Expression;
- import koala.dynamicjava.tree.ExpressionContainer;
- import koala.dynamicjava.tree.ForStatement;
- import koala.dynamicjava.tree.FormalParameter;
- import koala.dynamicjava.tree.FunctionCall;
- import koala.dynamicjava.tree.GreaterExpression;
- import koala.dynamicjava.tree.GreaterOrEqualExpression;
- import koala.dynamicjava.tree.IdentifierToken;
- import koala.dynamicjava.tree.IfThenElseStatement;
- import koala.dynamicjava.tree.IfThenStatement;
- import koala.dynamicjava.tree.ImportDeclaration;
- import koala.dynamicjava.tree.InnerAllocation;
- import koala.dynamicjava.tree.InnerClassAllocation;
- import koala.dynamicjava.tree.InstanceOfExpression;
- import koala.dynamicjava.tree.InterfaceDeclaration;
- import koala.dynamicjava.tree.LabeledStatement;
- import koala.dynamicjava.tree.LessExpression;
- import koala.dynamicjava.tree.LessOrEqualExpression;
- import koala.dynamicjava.tree.MinusExpression;
- import koala.dynamicjava.tree.MultiplyAssignExpression;
- import koala.dynamicjava.tree.MultiplyExpression;
- import koala.dynamicjava.tree.Node;
- import koala.dynamicjava.tree.NotEqualExpression;
- import koala.dynamicjava.tree.NotExpression;
- import koala.dynamicjava.tree.ObjectFieldAccess;
- import koala.dynamicjava.tree.ObjectMethodCall;
- import koala.dynamicjava.tree.OrExpression;
- import koala.dynamicjava.tree.PackageDeclaration;
- import koala.dynamicjava.tree.PlusExpression;
- import koala.dynamicjava.tree.PostDecrement;
- import koala.dynamicjava.tree.PostIncrement;
- import koala.dynamicjava.tree.PreDecrement;
- import koala.dynamicjava.tree.PreIncrement;
- import koala.dynamicjava.tree.QualifiedName;
- import koala.dynamicjava.tree.ReferenceType;
- import koala.dynamicjava.tree.RemainderAssignExpression;
- import koala.dynamicjava.tree.RemainderExpression;
- import koala.dynamicjava.tree.ReturnStatement;
- import koala.dynamicjava.tree.ShiftLeftAssignExpression;
- import koala.dynamicjava.tree.ShiftLeftExpression;
- import koala.dynamicjava.tree.ShiftRightAssignExpression;
- import koala.dynamicjava.tree.ShiftRightExpression;
- import koala.dynamicjava.tree.SimpleAllocation;
- import koala.dynamicjava.tree.SimpleAssignExpression;
- import koala.dynamicjava.tree.StaticFieldAccess;
- import koala.dynamicjava.tree.StaticMethodCall;
- import koala.dynamicjava.tree.SubtractAssignExpression;
- import koala.dynamicjava.tree.SubtractExpression;
- import koala.dynamicjava.tree.SuperMethodCall;
- import koala.dynamicjava.tree.SwitchBlock;
- import koala.dynamicjava.tree.SwitchStatement;
- import koala.dynamicjava.tree.SynchronizedStatement;
- import koala.dynamicjava.tree.ThisExpression;
- import koala.dynamicjava.tree.ThrowStatement;
- import koala.dynamicjava.tree.TreeUtilities;
- import koala.dynamicjava.tree.TryStatement;
- import koala.dynamicjava.tree.UnsignedShiftRightAssignExpression;
- import koala.dynamicjava.tree.UnsignedShiftRightExpression;
- import koala.dynamicjava.tree.VariableDeclaration;
- import koala.dynamicjava.tree.WhileStatement;
- import koala.dynamicjava.tree.visitor.VisitorObject;
-
- public class NameVisitor extends VisitorObject {
- private Context context;
-
- public Object visit(PackageDeclaration var1) {
- this.context.setCurrentPackage(var1.getName());
- return null;
- }
-
- public Object visit(ImportDeclaration var1) {
- if (var1.isPackage()) {
- this.context.declarePackageImport(var1.getName());
- } else {
- try {
- this.context.declareClassImport(var1.getName());
- } catch (ClassNotFoundException var3) {
- throw new CatchedExceptionError(var3, var1);
- }
- }
-
- return null;
- }
-
- public Object visit(WhileStatement var1) {
- Node var2 = var1.getCondition();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setCondition((Expression)var3);
- }
-
- var2 = var1.getBody();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setBody((Node)var3);
- }
-
- return null;
- }
-
- public Object visit(ForStatement var1) {
- this.context.enterScope();
- List var2;
- if ((var2 = var1.getInitialization()) != null) {
- this.visitList(var2);
- }
-
- Expression var3;
- if ((var3 = var1.getCondition()) != null) {
- Object var4 = var3.acceptVisitor(this);
- if (var4 != null) {
- if (var4 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var3);
- }
-
- var1.setCondition((Expression)var4);
- }
- }
-
- if ((var2 = var1.getUpdate()) != null) {
- this.visitList(var2);
- }
-
- var3 = var1.getBody();
- Object var7 = var3.acceptVisitor(this);
- if (var7 != null) {
- if (var7 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var3);
- }
-
- var1.setBody((Node)var7);
- }
-
- this.context.leaveScope();
- return null;
- }
-
- public Object visit(DoStatement var1) {
- Node var2 = var1.getCondition();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setCondition((Expression)var3);
- }
-
- var2 = var1.getBody();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setBody((Node)var3);
- }
-
- return null;
- }
-
- public Object visit(SwitchStatement var1) {
- Expression var2 = var1.getSelector();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setSelector((Expression)var3);
- }
-
- Iterator var4 = var1.getBindings().iterator();
-
- while(var4.hasNext()) {
- ((Node)var4.next()).acceptVisitor(this);
- }
-
- return null;
- }
-
- public Object visit(SwitchBlock var1) {
- Expression var2 = var1.getExpression();
- if (var2 != null) {
- this.visitExpressionContainer(var1);
- }
-
- List var3;
- if ((var3 = var1.getStatements()) != null) {
- this.visitList(var3);
- }
-
- return null;
- }
-
- public Object visit(LabeledStatement var1) {
- Node var2 = var1.getStatement();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setStatement((Expression)var3);
- }
-
- return null;
- }
-
- public Object visit(ThrowStatement var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(SynchronizedStatement var1) {
- Node var2 = var1.getLock();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setLock((Expression)var3);
- }
-
- var2 = var1.getBody();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setBody((Node)var3);
- }
-
- return null;
- }
-
- public Object visit(TryStatement var1) {
- var1.getTryBlock().acceptVisitor(this);
- Iterator var2 = var1.getCatchStatements().iterator();
-
- while(var2.hasNext()) {
- ((Node)var2.next()).acceptVisitor(this);
- }
-
- Node var3;
- if ((var3 = var1.getFinallyBlock()) != null) {
- var3.acceptVisitor(this);
- }
-
- return null;
- }
-
- public Object visit(CatchStatement var1) {
- this.context.enterScope();
- var1.getException().acceptVisitor(this);
- var1.getBlock().acceptVisitor(this);
- this.context.leaveScope();
- return null;
- }
-
- public Object visit(ReturnStatement var1) {
- Expression var2 = var1.getExpression();
- if (var2 != null) {
- this.visitExpressionContainer(var1);
- }
-
- return null;
- }
-
- public Object visit(IfThenStatement var1) {
- Node var2 = var1.getCondition();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setCondition((Expression)var3);
- }
-
- var2 = var1.getThenStatement();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setThenStatement((Node)var3);
- }
-
- return null;
- }
-
- public Object visit(IfThenElseStatement var1) {
- Node var2 = var1.getCondition();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setCondition((Expression)var3);
- }
-
- var2 = var1.getThenStatement();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setThenStatement((Node)var3);
- }
-
- var2 = var1.getElseStatement();
- var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setElseStatement((Node)var3);
- }
-
- return null;
- }
-
- public Object visit(VariableDeclaration var1) {
- String var2 = var1.getName();
- if (this.context.isDefinedVariable(var2)) {
- var1.setProperty("errorStrings", new String[]{var2});
- throw new ExecutionError("variable.redefinition", var1);
- } else {
- if (var1.isFinal()) {
- this.context.defineConstant(var2, (Object)null);
- } else {
- this.context.define(var2, (Object)null);
- }
-
- Expression var3 = var1.getInitializer();
- if (var3 != null) {
- Object var4 = ((Node)var3).acceptVisitor(this);
- if (var4 != null) {
- if (var4 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var3);
- }
-
- var1.setInitializer((Expression)var4);
- }
- }
-
- return null;
- }
- }
-
- public Object visit(SimpleAssignExpression var1) {
- Expression var2 = var1.getRightExpression();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("right.expression", var2);
- }
-
- var1.setRightExpression((Expression)var3);
- }
-
- Expression var4 = var1.getLeftExpression();
- if (var4 instanceof QualifiedName) {
- List var5 = ((QualifiedName)var4).getIdentifiers();
- String var6 = ((IdentifierToken)var5.get(0)).image();
- if (var5.size() == 1 && !this.context.exists(var6)) {
- this.context.define(var6, (Object)null);
- }
- }
-
- var3 = var4.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("left.expression", var1);
- }
-
- var1.setLeftExpression((Expression)var3);
- }
-
- return null;
- }
-
- public Object visit(BlockStatement var1) {
- this.context.enterScope();
- this.visitList(var1.getStatements());
- this.context.leaveScope();
- return null;
- }
-
- public Object visit(ObjectFieldAccess var1) {
- Object var2 = var1.getExpression().acceptVisitor(this);
- if (var2 != null) {
- if (var2 instanceof ReferenceType) {
- return new StaticFieldAccess((ReferenceType)var2, var1.getFieldName(), var1.getFilename(), var1.getBeginLine(), var1.getBeginColumn(), var1.getEndLine(), var1.getEndColumn());
- }
-
- var1.setExpression((Expression)var2);
- }
-
- return null;
- }
-
- public Object visit(ObjectMethodCall var1) {
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- Expression var3 = var1.getExpression();
- Object var4;
- if (var3 == null) {
- var4 = this.context.getDefaultQualifier(var1);
- } else {
- var4 = var3.acceptVisitor(this);
- if (var4 == null) {
- return null;
- }
- }
-
- if (var4 == null) {
- return new FunctionCall(var1.getMethodName(), var1.getArguments(), var1.getFilename(), var1.getBeginLine(), var1.getBeginColumn(), var1.getEndLine(), var1.getEndColumn());
- } else if (var4 instanceof ReferenceType) {
- return new StaticMethodCall((ReferenceType)var4, var1.getMethodName(), var1.getArguments(), var1.getFilename(), var1.getBeginLine(), var1.getBeginColumn(), var1.getEndLine(), var1.getEndColumn());
- } else {
- var1.setExpression((Expression)var4);
- return null;
- }
- }
-
- public Object visit(SuperMethodCall var1) {
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- return null;
- }
-
- public Object visit(ThisExpression var1) {
- return this.context.getDefaultQualifier(var1, var1.getClassName());
- }
-
- public Object visit(QualifiedName var1) {
- List var2 = var1.getIdentifiers();
- IdentifierToken var3 = (IdentifierToken)var2.get(0);
- if (this.context.isDefined(var3.image())) {
- Object var10 = this.context.createName(var1, var3);
- Iterator var11 = var2.iterator();
- var11.next();
-
- while(var11.hasNext()) {
- IdentifierToken var15;
- var10 = new ObjectFieldAccess((Expression)var10, (var15 = (IdentifierToken)var11.next()).image(), var1.getFilename(), var3.beginLine(), var3.beginColumn(), var15.endLine(), var15.endColumn());
- }
-
- return var10;
- } else {
- List var4 = (List)((LinkedList)var2).clone();
- boolean var5 = false;
-
- while(var4.size() > 0) {
- String var6 = TreeUtilities.listToName(var4);
- if (var5 = this.context.classExists(var6)) {
- break;
- }
-
- var4.remove(var4.size() - 1);
- }
-
- if (!var5) {
- var1.setProperty("errorStrings", new String[]{var3.image()});
- throw new ExecutionError("undefined.class", var1);
- } else {
- IdentifierToken var12 = (IdentifierToken)var4.get(var4.size() - 1);
- ReferenceType var7 = new ReferenceType(var4, var1.getFilename(), var3.beginLine(), var3.beginColumn(), var12.endLine(), var12.endColumn());
- if (var4.size() == var2.size()) {
- return var7;
- } else {
- ListIterator var8 = var2.listIterator(var4.size());
-
- Object var9;
- for(var9 = new StaticFieldAccess(var7, (var12 = (IdentifierToken)var8.next()).image(), var1.getFilename(), var3.beginLine(), var3.beginColumn(), var12.endLine(), var12.endColumn()); var8.hasNext(); var9 = new ObjectFieldAccess((Expression)var9, (var12 = (IdentifierToken)var8.next()).image(), var1.getFilename(), var3.beginLine(), var3.beginColumn(), var12.endLine(), var12.endColumn())) {
- }
-
- return var9;
- }
- }
- }
- }
-
- public Object visit(SimpleAllocation var1) {
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- return null;
- }
-
- public Object visit(ArrayAllocation var1) {
- this.visitList(var1.getSizes());
- if (var1.getInitialization() != null) {
- var1.getInitialization().acceptVisitor(this);
- }
-
- return null;
- }
-
- public Object visit(InnerAllocation var1) {
- this.visitExpressionContainer(var1);
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- return null;
- }
-
- public Object visit(ArrayInitializer var1) {
- this.visitList(var1.getCells());
- return null;
- }
-
- public Object visit(ArrayAccess var1) {
- this.visitExpressionContainer(var1);
- Expression var2 = var1.getCellNumber();
- Object var3 = ((Node)var2).acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setCellNumber((Expression)var3);
- }
-
- return null;
- }
-
- public Object visit(NotExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(ComplementExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(PlusExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(MinusExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(AddExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(AddAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(SubtractExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(SubtractAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(MultiplyExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(MultiplyAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(DivideExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(DivideAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(RemainderExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(RemainderAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(EqualExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(NotEqualExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(LessExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(LessOrEqualExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(GreaterExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(GreaterOrEqualExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(BitAndExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(BitAndAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ExclusiveOrExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ExclusiveOrAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(BitOrExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(BitOrAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ShiftLeftExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ShiftLeftAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ShiftRightExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(ShiftRightAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(UnsignedShiftRightExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(UnsignedShiftRightAssignExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(AndExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(OrExpression var1) {
- this.visitBinaryExpression(var1);
- return null;
- }
-
- public Object visit(InstanceOfExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(ConditionalExpression var1) {
- Expression var2 = var1.getConditionExpression();
- Object var3 = ((Node)var2).acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setConditionExpression((Expression)var3);
- }
-
- var2 = var1.getIfTrueExpression();
- var3 = ((Node)var2).acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.second.operand", var2);
- }
-
- var1.setIfTrueExpression((Expression)var3);
- }
-
- var2 = var1.getIfFalseExpression();
- var3 = ((Node)var2).acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.third.operand", var2);
- }
-
- var1.setIfFalseExpression((Expression)var3);
- }
-
- return null;
- }
-
- public Object visit(PostIncrement var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(PreIncrement var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(PostDecrement var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(PreDecrement var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(CastExpression var1) {
- this.visitExpressionContainer(var1);
- return null;
- }
-
- public Object visit(ClassAllocation var1) {
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- return null;
- }
-
- public Object visit(InnerClassAllocation var1) {
- this.visitExpressionContainer(var1);
- List var2 = var1.getArguments();
- if (var2 != null) {
- this.visitList(var2);
- }
-
- return null;
- }
-
- public Object visit(FormalParameter var1) {
- if (var1.isFinal()) {
- this.context.defineConstant(var1.getName(), (Object)null);
- } else {
- this.context.define(var1.getName(), (Object)null);
- }
-
- return null;
- }
-
- public Object visit(ClassDeclaration var1) {
- this.context.defineClass(var1);
- return null;
- }
-
- public Object visit(InterfaceDeclaration var1) {
- this.context.defineClass(var1);
- return null;
- }
-
- private void visitExpressionContainer(ExpressionContainer var1) {
- Expression var2 = var1.getExpression();
- Object var3 = var2.acceptVisitor(this);
- if (var3 != null) {
- if (var3 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var1.setExpression((Expression)var3);
- }
-
- }
-
- private void visitBinaryExpression(BinaryExpression var1) {
- Object var2 = var1.getLeftExpression().acceptVisitor(this);
- if (var2 != null) {
- if (!(var2 instanceof Expression)) {
- throw new ExecutionError("left.operand", var1);
- }
-
- var1.setLeftExpression((Expression)var2);
- }
-
- var2 = var1.getRightExpression().acceptVisitor(this);
- if (var2 != null) {
- if (!(var2 instanceof Expression)) {
- throw new ExecutionError("right.operand", var1);
- }
-
- var1.setRightExpression((Expression)var2);
- }
-
- }
-
- private void visitList(List var1) {
- ListIterator var3 = var1.listIterator();
-
- while(var3.hasNext()) {
- Node var2;
- Object var4 = (var2 = (Node)var3.next()).acceptVisitor(this);
- if (var4 != null) {
- if (var4 instanceof ReferenceType) {
- throw new ExecutionError("malformed.expression", var2);
- }
-
- var3.set(var4);
- }
- }
-
- }
-
- public NameVisitor(Context var1) {
- this.context = var1;
- }
- }
-